The evolution of the computer industry is unparalleled in its rate of growth and complexity. Personal computers, for example, which began as little more than calculators having limited memory, tape-driven input capabilities and monochrome displays are now able to handle almost any data processing task with relative ease. While the ever-growing increase in computing power provided greater capabilities for application programmers and end users alike, the corresponding increase in complexity created an ease-of-use problem. Consequently, computer system designers were faced with a new challenge, namely to harness the available computing power in a form that was useable even by those with relatively little computer training, to ease the transition of users into a computer-based information paradigm.
In pursuit of this objective, in the early to mid-1980's many new input/output philosophies, such as "user friendly," "wysiwig" and "menu driven" became popular. These approaches to the I/O function are particularly applicable to microcomputers, also known as personal computers, which are intended to appeal to a broad audience of computer users, including those who had no previous computer experience. An important aspect of computers which employ these input/output concepts was, and continues to be, the interface which allows the user to input commands and data and receive results. One particularly prevalent form of interface is known as a graphical user interface (GUI).
One popular type of GUI display is based on a visual metaphor which defines a monitor screen as a workspace known as a "desktop," in which the contents of documents are presented in relocatable regions known as "windows." In addition to windows, the graphical user interface includes a number of different types of control objects, which enable the user to select from available options presented by the computer's operating system and/or application programs, as well as provide feedback to the user. Menus are employed as another mechanism which permits the user to select from available options and provide input to the computer.
Originally, each graphical user interface had a fixed appearance and functionality. For a given user interface, each window would have the same appearance, regardless of its contents and the application programs running on the computer. For example, a window which displayed the contents of a word processing document would have the same structure and appearance as another window which contained the contents of a graphics document, even though they were associated with different applications programs and may have different sizes and locations on the display screen. Similarly, control objects and menus had the same appearance and functionality, regardless of the particular context within which they appeared. The appearances and functionality of the control objects and menus within the user interface were determined by the computer system designer at the time the operating system for the computer was being developed.
More recently, graphical user interfaces have become customizable, to present appearances different from the one created by the original system designer. With this approach software developers, and users, can change the appearance of the various graphical elements associated with the user interface. Thus, for example, one developer may design a user interface with a conservative theme, in which the various graphical elements have symmetrical shapes and are displayed with subdued colors, whereas another developer may design an interface with a more radical theme, using bright colors and elements of all sizes and shapes. The end users can select from among the different available themes, as desired. Thus, where a computer is used in a home environment, the parents may choose to have the conservative theme on the display while they are using the computer, whereas the children may prefer to switch to the radical theme when they are using it. Examples of user interfaces that can be customized to present different appearance themes are disclosed in copending, commonly assigned application Ser. Nos. 08/243,327, 08/242,963 and 08/243,268, filed May 16, 1994.
While the ability to customize the user interface to present different appearance themes greatly enhances the user experience, it also presents practical considerations regarding the size of the software program, and hence memory requirements that are imposed. More particularly, each different theme that is available to the user on a particular computer requires its own set of definitions for each of the elements of the interface. Thus, in the example given above, a conservative theme requires software that defines the appearance of windows, menus, and each of the available control objects. Similarly, the radical theme also requires its own set of software which contains a definition for each graphical element. Thus, as more and more themes are made available to the user, the amount of memory required to store the software for the various themes can increase significantly.
Another consideration that is raised by the ability to switch between various themes for the graphical user interface pertains to the consistency of options presented to the user. One of the attractive features of many graphical user interfaces, particularly for novice users, is the consistency of operation that is presented regardless of the particular application program that is being executed. For instance, if a window is not able to display the entire contents of a document, it may include scroll bars that can be actuated by the user to view different portions of a document. Similarly, it may contain a close box that enables the user to close the file containing the document and remove the window from the display. It is desirable to have the scroll bars and the close box appear at the same locations on all windows, regardless of the particular application program being executed. With this approach, the user only needs to learn one basic set of operations for windows, which will apply in all circumstances. The ability to customize the appearance of the user interface may cause this consistency of operation to be lost, however. For example, one developer may design a window in which the close box appears in the upper left comer of the window, while another designer may place it at a different location. Similarly, the scroll bars might be positioned along different edges of the respective windows. If these control objects have significantly different appearances in the respective themes, the user may become confused and frustrated if a different operation has to be learned for every different theme.
Accordingly, it is desirable to provide a structure which facilitates the customization of graphical user interfaces while minimizing the memory requirements and maintaining the consistency and reliability of operation between different appearances.